package cuiyt.juc.function;


import java.util.function.Function;

/**
 * @author cyt
 * @create 2020-05-01 23:36
 */
public class function {

    public static void main(String[] args) {
        // 函数式接口， 可以使用 lambda接口
        Function<String, String> function2 = (a) -> {
            return a + " Jack!";
        };
        Function<String, String> function1 = a -> a + " Bob!";
        String greet = function2.compose(function1).apply("Hello");
        System.out.println(greet);
        Function<String, String> function3 = (a) -> a + " - > ";

        Function<String, String> function = (test) -> {
            return test + "cyt ";
        };

        /**
         * 把 compose 计算的结果和apply 中的参数一起在进行计算。
         */
        String apply = function2.compose(function).apply("test ");

        String test = function2.apply("test");

        /**
         *  先计算 apply 中的结果，然后把结果放到 andThen 中计算。
         */
        String ff = function2.andThen((f) -> {
            return f + "dev";
        }).apply("ff");

        System.out.println(ff);

    }
}
